﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Office.Interop.Excel;
using System.Windows;

namespace SimulacionExcelIne
{
    public class ConexionExcel
    {
        
        protected Microsoft.Office.Interop.Excel.Application ArchivoConsulta;
        protected Workbook Libro;
        protected string path;

       
        /// <summary>
        /// Genera una conección dada la dirección
        /// </summary>
        /// <param name="direccion"></param>
        

        public ConexionExcel(string direccion)
        {

            path = direccion;
            AbrirLibroExcel();
        }

        /// <summary>
        /// Inicia la conexion a excel en funcion del Hoja especificado
        /// </summary>
        private void AbrirLibroExcel(){
            ArchivoConsulta = new Microsoft.Office.Interop.Excel.Application();
            // Intentamos abrir el excel el excel y lo almacenamos en memoria
            try
            {
                Libro = ArchivoConsulta.Workbooks.Open(this.path);
            }
            catch (Exception e)
            {
                MessageBox.Show(e.ToString());
            }
            

            //***Controlar la excepción con un while***//
            ArchivoConsulta.Visible = true;
            //Cerramos el libro consultado para luego seguir con "Libro" y hacer todos los algoritmos
            //sobre "Libro"
        }

        public void cerrarLibro()
        {
            System.Runtime.InteropServices.Marshal.ReleaseComObject(Libro);
            Libro = null;
            ArchivoConsulta.DisplayAlerts = true; //cerrar excel sin avisar
            ArchivoConsulta.Quit();
            System.Runtime.InteropServices.Marshal.ReleaseComObject(ArchivoConsulta);
            ArchivoConsulta = null;
        }       
    }
}
